package edu.uoc.tdp.pac4.connexiomanteniment;

import java.util.Date;



public class Usuari extends Persona {

	public static final char TIPUS_USUARI_ADMINISTRADOR = 'A';
	public static final char TIPUS_USUARI_ESTUDIANT = 'E';
	public static final char TIPUS_USUARI_RESPONSABLEEVENTS = 'R';
	public static final char ESTAT_EN_SISTEMA_ACTIU = 'a';      // vol dir actiu i no bloquejat
	public static final char ESTAT_EN_SISTEMA_BLOQUEJAT = 'b';  // vol dir actiu, pero bloquejat
	public static final char ESTAT_EN_SISTEMA_INACTIU = 'i';    // vol dir inactiu (esborrat)
	
	public static Usuari usuariConnectat = null;
	
	protected Integer idIntern; // identificador numeric sequencial
	private String idUsuari;
	private String pwd;
	private String email;
	private char estatEnSistema;
	private Date dataCreacio;
	private Administrador usuariCreacio; 
	private Date dataModificacio;
	private Administrador usuariModificacio;
	private Date dataEsborrat;
	private Administrador usuariEsborrat;
	private char tipusUsuari;

	public Usuari() {}
	public Usuari(String pTipusDocumentId, String pDocument) { super(pTipusDocumentId,pDocument); }
	public Usuari(String pTipusDocumentId, String pDocument, String pNom, String pCognom1, String pCognom2, String pIdUsuari, String pPwd, String pEmail) {
		this(pTipusDocumentId,pDocument);
		setNom(pNom);
		setCognom1(pCognom1);
		setCognom2(pCognom2);
		setIdUsuari(pIdUsuari);
		setPwd(pPwd);
		setMail(pEmail);
	}
	
	public Integer getIdIntern() { return idIntern; }
	public void setIdIntern(Integer pIdIntern) { idIntern = pIdIntern; }
	public String getIdUsuari() { return idUsuari; } 
	public void setIdUsuari(String pIdUsuari) { idUsuari = pIdUsuari; }
	public String getPwd() { return pwd; } 
	public void setPwd(String pPwd) { pwd = pPwd; }
	public String getMail() { return email; }
	public void setMail(String pEmail) { email = pEmail; }
	public char getEstatEnSistema() { return estatEnSistema; }
	public void setEstatEnSistema(char pEstat) { estatEnSistema = pEstat; }
	public Date getDataCreacio() { return dataCreacio; } 
	public void setDataCreacio(Date pDataCreacio) { dataCreacio = pDataCreacio == null? null : (Date)pDataCreacio.clone(); } 
	public Date getDataModificacio() { return dataModificacio; } 
	public void setDataModificacio(Date pDataModificacio) { dataModificacio = pDataModificacio == null? null : (Date)pDataModificacio.clone(); } 
	public Date getDataEsborrat() { return dataEsborrat; } 
	public void setDataEsborrat(Date pDataEsborrat) { dataEsborrat = pDataEsborrat == null? null : (Date)pDataEsborrat.clone(); } 
	public Administrador getUsuariCreacio() { return usuariCreacio; } 
	public void setUsuariCreacio(Administrador pUsuariCreacio) { usuariCreacio = pUsuariCreacio; } 
	public Administrador getUsuariModificacio() { return usuariModificacio; } 
	public void setUsuariModificacio(Administrador pUsuariModificacio) { usuariModificacio = pUsuariModificacio; } 
	public Administrador getUsuariEsborrat() { return usuariEsborrat; } 
	public void setUsuariEsborrat(Administrador pUsuariEsborrat) { usuariEsborrat = pUsuariEsborrat; }
	public char getTipusUsuari() { return tipusUsuari; }
	public void setTipusUsuari(char pTipusUsuari) { tipusUsuari = pTipusUsuari; }
	
	public String toString() {
		String s = "id intern : \t\t" + (idIntern == null? "null" : idIntern.toString()) + "\n"; 
		s += "id usuari (username) : \t " + (idUsuari == null? "null" : idUsuari) + "\n";
		s += "password : \t\t" + (pwd == null? "null" : pwd) + "\n";
		s += "email : \t\t" + (email == null? "null" : email) + "\n";
		s += "tipus usuari : \t\t" + tipusUsuari + "\t\t";
		switch (tipusUsuari) {
		case 'A' : s += "(administrador)\n"; break;
		case 'E' : s += "(estudiant)\n"; break;
		case 'R' : s += "(responsable gestio proves)\n"; break;
		default: s += "(tipus desconegut!!!)";
		}
		s += "estat : \t\t" + estatEnSistema + "\t\t";
		switch (estatEnSistema) {
		case 'a' : s += "(actiu)\n"; break;
		case 'b' : s += "(bloquejat, no pot fer login)\n"; break;
		case 'i' : s += "(inactiu, es a dir, esborrat, no pot fer login)\n"; break;
		default: s += "(estat desconegut!!!)";
		}
		s += "data creacio : \t\t" + (dataCreacio == null? "null" : dataCreacio) + "\n";
		s += "data modificacio : \t" + (dataModificacio == null? "null" : dataModificacio) + "\n";
		s += "data esborrat : \t" + (dataEsborrat == null? "null" : dataEsborrat) + "\n";
		return s;
	}
	
}